[INFO] cloning repository https://github.com/tuna-os/hanthor-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/tuna-os/hanthor-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftuna-os%2Fhanthor-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftuna-os%2Fhanthor-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 5bc69365ca43685fbb4d305b6affbcfdab331b3c
[INFO] checking tuna-os/hanthor-rust against master#40557f6225e337d68c8d4f086557ce54135f5dd9 for pr-158447
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ftuna-os%2Fhanthor-rust" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/tuna-os/hanthor-rust
[INFO] finished tweaking git repo https://github.com/tuna-os/hanthor-rust
[INFO] tweaked toml for git repo https://github.com/tuna-os/hanthor-rust written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/tuna-os/hanthor-rust on toolchain 40557f6225e337d68c8d4f086557ce54135f5dd9
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+40557f6225e337d68c8d4f086557ce54135f5dd9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/tuna-os/hanthor-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+40557f6225e337d68c8d4f086557ce54135f5dd9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Updating git repository `https://github.com/hanthor/rdocx.git`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded gdk-pixbuf-sys v0.22.0
[INFO] [stderr]   Downloaded cairo-sys-rs v0.22.0
[INFO] [stderr]   Downloaded stringmetrics v2.2.2
[INFO] [stderr]   Downloaded pango-sys v0.22.0
[INFO] [stderr]   Downloaded gobject-sys v0.22.6
[INFO] [stderr]   Downloaded graphene-sys v0.22.0
[INFO] [stderr]   Downloaded gtk4-macros v0.11.0
[INFO] [stderr]   Downloaded graphene-rs v0.22.0
[INFO] [stderr]   Downloaded gdk-pixbuf v0.22.0
[INFO] [stderr]   Downloaded gsk4-sys v0.11.1
[INFO] [stderr]   Downloaded polycool v0.4.0
[INFO] [stderr]   Downloaded cfg-expr v0.20.8
[INFO] [stderr]   Downloaded libadwaita-sys v0.9.1
[INFO] [stderr]   Downloaded gsk4 v0.11.1
[INFO] [stderr]   Downloaded pangocairo v0.22.0
[INFO] [stderr]   Downloaded pangocairo-sys v0.22.0
[INFO] [stderr]   Downloaded system-deps v7.0.8
[INFO] [stderr]   Downloaded subsetter v0.2.6
[INFO] [stderr]   Downloaded rdocx-oxml v0.1.2
[INFO] [stderr]   Downloaded ppmd-rust v1.4.0
[INFO] [stderr]   Downloaded cairo-rs v0.22.0
[INFO] [stderr]   Downloaded pango v0.22.6
[INFO] [stderr]   Downloaded glib-macros v0.22.6
[INFO] [stderr]   Downloaded gdk4-sys v0.11.2
[INFO] [stderr]   Downloaded glib-sys v0.22.6
[INFO] [stderr]   Downloaded gio-sys v0.22.0
[INFO] [stderr]   Downloaded zspell v0.5.5
[INFO] [stderr]   Downloaded libadwaita v0.9.1
[INFO] [stderr]   Downloaded gtk4-sys v0.11.3
[INFO] [stderr]   Downloaded gdk4 v0.11.2
[INFO] [stderr]   Downloaded imgref v1.12.2
[INFO] [stderr]   Downloaded kurbo v0.13.1
[INFO] [stderr]   Downloaded bitcode_derive v0.6.9
[INFO] [stderr]   Downloaded gio v0.22.6
[INFO] [stderr]   Downloaded write-fonts v0.48.1
[INFO] [stderr]   Downloaded codepage v0.1.2
[INFO] [stderr]   Downloaded glib v0.22.7
[INFO] [stderr]   Downloaded lzma-rust2 v0.16.4
[INFO] [stderr]   Downloaded bitcode v0.6.9
[INFO] [stderr]   Downloaded calamine v0.26.1
[INFO] [stderr]   Downloaded gtk4 v0.11.3
[INFO] [stderr]   Downloaded ironcalc_base v0.7.1
[INFO] [stderr]   Downloaded glam v0.33.1
[INFO] [stderr]   Downloaded pdf-writer v0.14.0
[INFO] [stderr]   Downloaded rust_xlsxwriter v0.80.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:fd22e2154e7db748230f413534f3a6d034160c9d2b7c14b90fba4e9bfc1a36d4" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 2a84e2141bf3052f958d8fd4b67df56f65174e4598c800a74e28f100dcc54c66
[INFO] running `Command { std: "docker" "start" "2a84e2141bf3052f958d8fd4b67df56f65174e4598c800a74e28f100dcc54c66", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2a84e2141bf3052f958d8fd4b67df56f65174e4598c800a74e28f100dcc54c66" "/opt/rustwide/cargo-home/bin/cargo" "+40557f6225e337d68c8d4f086557ce54135f5dd9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2a84e2141bf3052f958d8fd4b67df56f65174e4598c800a74e28f100dcc54c66", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "2a84e2141bf3052f958d8fd4b67df56f65174e4598c800a74e28f100dcc54c66" "/opt/rustwide/cargo-home/bin/cargo" "+40557f6225e337d68c8d4f086557ce54135f5dd9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling quote v1.0.46
[INFO] [stderr]    Compiling target-lexicon v0.13.5
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling smallvec v1.15.2
[INFO] [stderr]    Compiling version-compare v0.2.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking log v0.4.33
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]     Checking arrayvec v0.7.7
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]     Checking flate2 v1.1.9
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]    Compiling memoffset v0.9.1
[INFO] [stderr]     Checking bumpalo v3.20.3
[INFO] [stderr]     Checking time v0.3.51
[INFO] [stderr]    Compiling field-offset v0.3.6
[INFO] [stderr]     Checking deflate64 v0.1.12
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]     Checking zopfli v0.8.3
[INFO] [stderr]    Compiling cfg-expr v0.20.8
[INFO] [stderr]     Checking num-format v0.4.4
[INFO] [stderr]    Compiling bzip2-sys v0.1.13+1.0.8
[INFO] [stderr]    Compiling lzma-sys v0.1.20
[INFO] [stderr]     Checking chrono v0.4.45
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking inout v0.1.4
[INFO] [stderr]     Checking quick-xml v0.37.5
[INFO] [stderr]    Compiling getrandom v0.3.4
[INFO] [stderr]     Checking crc-catalog v2.5.0
[INFO] [stderr]    Compiling getrandom v0.4.3
[INFO] [stderr]     Checking crc v3.4.0
[INFO] [stderr]    Compiling system-deps v7.0.8
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking num-bigint v0.4.6
[INFO] [stderr]     Checking core_maths v0.1.1
[INFO] [stderr]     Checking hmac v0.12.1
[INFO] [stderr]    Compiling slotmap v1.1.1
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling zip v2.4.2
[INFO] [stderr]     Checking pbkdf2 v0.12.2
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking lzma-rs v0.3.0
[INFO] [stderr]     Checking bzip2 v0.5.2
[INFO] [stderr]     Checking xz2 v0.1.7
[INFO] [stderr]     Checking suite-common-core v0.1.0 (/opt/rustwide/workdir/suite-common-core)
[INFO] [stderr]     Checking ttf-parser v0.25.1
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking polycool v0.4.0
[INFO] [stderr]     Checking inout v0.2.2
[INFO] [stderr]     Checking roxmltree v0.20.0
[INFO] [stderr]     Checking once_cell v1.21.4
[INFO] [stderr]    Compiling built v0.8.1
[INFO] [stderr]     Checking num-rational v0.4.2
[INFO] [stderr]    Compiling glib-sys v0.22.6
[INFO] [stderr]    Compiling gobject-sys v0.22.6
[INFO] [stderr]    Compiling gio-sys v0.22.0
[INFO] [stderr]    Compiling pango-sys v0.22.0
[INFO] [stderr]    Compiling cairo-sys-rs v0.22.0
[INFO] [stderr]    Compiling gdk-pixbuf-sys v0.22.0
[INFO] [stderr]    Compiling graphene-sys v0.22.0
[INFO] [stderr]    Compiling gdk4-sys v0.11.2
[INFO] [stderr]    Compiling gsk4-sys v0.11.1
[INFO] [stderr]    Compiling gtk4-sys v0.11.3
[INFO] [stderr]    Compiling libadwaita-sys v0.9.1
[INFO] [stderr]    Compiling pangocairo-sys v0.22.0
[INFO] [stderr]    Compiling rav1e v0.8.1
[INFO] [stderr]     Checking fontconfig-parser v0.5.8
[INFO] [stderr]     Checking kurbo v0.13.1
[INFO] [stderr]     Checking cipher v0.5.2
[INFO] [stderr]     Checking getrandom v0.2.17
[INFO] [stderr]     Checking memmap2 v0.9.11
[INFO] [stderr]     Checking no_std_io2 v0.9.4
[INFO] [stderr]     Checking nom v8.0.0
[INFO] [stderr]     Checking unicode-ccc v0.4.0
[INFO] [stderr]     Checking unicode-bidi-mirroring v0.4.0
[INFO] [stderr]     Checking cpubits v0.1.1
[INFO] [stderr]     Checking unicode-script v0.5.8
[INFO] [stderr]    Compiling pulldown-cmark v0.12.2
[INFO] [stderr]     Checking unicode-properties v0.1.4
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking maybe-rayon v0.1.1
[INFO] [stderr]     Checking aes v0.9.1
[INFO] [stderr]     Checking getopts v0.2.24
[INFO] [stderr]     Checking bitstream-io v4.10.0
[INFO] [stderr]     Checking fontdb v0.23.0
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking quick-xml v0.31.0
[INFO] [stderr]    Compiling simd_helpers v0.1.0
[INFO] [stderr]     Checking constant_time_eq v0.4.2
[INFO] [stderr]     Checking typed-path v0.12.3
[INFO] [stderr]     Checking unicode-linebreak v0.1.5
[INFO] [stderr]     Checking ppmd-rust v1.4.0
[INFO] [stderr]     Checking imgref v1.12.2
[INFO] [stderr]     Checking rustc-hash v2.1.2
[INFO] [stderr]     Checking pulldown-cmark-escape v0.11.0
[INFO] [stderr]    Compiling zspell v0.5.5
[INFO] [stderr]     Checking loop9 v0.1.5
[INFO] [stderr]     Checking dirs-sys v0.4.1
[INFO] [stderr]     Checking pdf-writer v0.14.0
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking avif-serialize v0.8.9
[INFO] [stderr]     Checking moxcms v0.8.1
[INFO] [stderr]     Checking statrs v0.18.0
[INFO] [stderr]     Checking dirs v5.0.1
[INFO] [stderr]     Checking csv v1.4.0
[INFO] [stderr]     Checking chrono-tz v0.10.4
[INFO] [stderr]     Checking codepage v0.1.2
[INFO] [stderr]     Checking png v0.18.1
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking sys-locale v0.3.2
[INFO] [stderr]     Checking xxhash-rust v0.8.15
[INFO] [stderr]     Checking stringmetrics v2.2.2
[INFO] [stderr]     Checking tempfile v3.27.0
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling futures-macro v0.3.32
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zeroize_derive v1.4.3
[INFO] [stderr]    Compiling glib-macros v0.22.6
[INFO] [stderr]     Checking zeroize v1.8.2
[INFO] [stderr]    Compiling zerocopy-derive v0.8.52
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]     Checking block-buffer v0.12.1
[INFO] [stderr]     Checking digest v0.11.3
[INFO] [stderr]     Checking thiserror v2.0.18
[INFO] [stderr]    Compiling equator-macro v0.4.2
[INFO] [stderr]     Checking bytemuck v1.25.0
[INFO] [stderr]    Compiling gtk4-macros v0.11.0
[INFO] [stderr]     Checking font-types v0.11.3
[INFO] [stderr]     Checking equator v0.4.2
[INFO] [stderr]     Checking read-fonts v0.39.2
[INFO] [stderr]    Compiling displaydoc v0.2.6
[INFO] [stderr]     Checking aligned-vec v0.6.4
[INFO] [stderr]     Checking v_frame v0.3.9
[INFO] [stderr]     Checking zerocopy v0.8.52
[INFO] [stderr]     Checking sha2 v0.11.0
[INFO] [stderr]     Checking hmac v0.13.0
[INFO] [stderr]     Checking futures-executor v0.3.32
[INFO] [stderr]     Checking rdocx-oxml v0.1.2 (https://github.com/hanthor/rdocx.git?rev=67c6e85#67c6e851)
[INFO] [stderr]    Compiling profiling-procmacros v1.0.18
[INFO] [stderr]    Compiling arg_enum_proc_macro v0.3.4
[INFO] [stderr]     Checking lzma-rust2 v0.16.4
[INFO] [stderr]     Checking av-scenechange v0.14.1
[INFO] [stderr]     Checking profiling v1.0.18
[INFO] [stderr]     Checking pbkdf2 v0.13.0
[INFO] [stderr]     Checking av1-grain v0.2.5
[INFO] [stderr]     Checking rustybuzz v0.20.1
[INFO] [stderr]     Checking glib v0.22.7
[INFO] [stderr]     Checking tiny-skia-path v0.11.4
[INFO] [stderr]     Checking sha1 v0.11.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]     Checking tiny-skia v0.11.4
[INFO] [stderr]     Checking zip v8.6.0
[INFO] [stderr]     Checking rdocx-layout v0.1.2 (https://github.com/hanthor/rdocx.git?rev=67c6e85#67c6e851)
[INFO] [stderr]    Compiling bitcode_derive v0.6.9
[INFO] [stderr]     Checking rdocx-opc v0.1.2 (https://github.com/hanthor/rdocx.git?rev=67c6e85#67c6e851)
[INFO] [stderr]     Checking rdocx-html v0.1.2 (https://github.com/hanthor/rdocx.git?rev=67c6e85#67c6e851)
[INFO] [stderr]     Checking qoi v0.4.1
[INFO] [stderr]    Compiling visibility v0.1.1
[INFO] [stderr]     Checking rust_xlsxwriter v0.80.0
[INFO] [stderr]     Checking rdocx-oxml v0.1.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking ahash v0.8.12
[INFO] [stderr]     Checking rand v0.8.6
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking exr v1.74.0
[INFO] [stderr]     Checking tiff v0.11.3
[INFO] [stderr]     Checking bitcode v0.6.9
[INFO] [stderr]     Checking skrifa v0.42.1
[INFO] [stderr]     Checking write-fonts v0.48.1
[INFO] [stderr]     Checking calamine v0.26.1
[INFO] [stderr]     Checking ironcalc_base v0.7.1
[INFO] [stderr]     Checking ravif v0.13.0
[INFO] [stderr]     Checking image v0.25.10
[INFO] [stderr]     Checking gio v0.22.6
[INFO] [stderr]     Checking cairo-rs v0.22.0
[INFO] [stderr]     Checking graphene-rs v0.22.0
[INFO] [stderr]     Checking subsetter v0.2.6
[INFO] [stderr]     Checking rdocx-pdf v0.1.2 (https://github.com/hanthor/rdocx.git?rev=67c6e85#67c6e851)
[INFO] [stderr]     Checking rdocx v0.1.2 (https://github.com/hanthor/rdocx.git?rev=67c6e85#67c6e851)
[INFO] [stderr]     Checking pango v0.22.6
[INFO] [stderr]     Checking gdk-pixbuf v0.22.0
[INFO] [stderr]     Checking gdk4 v0.11.2
[INFO] [stderr]     Checking pangocairo v0.22.0
[INFO] [stderr]     Checking gsk4 v0.11.1
[INFO] [stderr]     Checking gtk4 v0.11.3
[INFO] [stderr]     Checking libadwaita v0.9.1
[INFO] [stderr]     Checking suite-common v0.1.0 (/opt/rustwide/workdir/suite-common)
[INFO] [stdout] warning: unused import: `glib`
[INFO] [stdout]  --> suite-common/src/file_dialogs.rs:6:30
[INFO] [stdout]   |
[INFO] [stdout] 6 | use gtk4::{self as gtk, gio, glib, prelude::*};
[INFO] [stdout]   |                              ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib`
[INFO] [stdout]  --> suite-common/src/toast_manager.rs:6:25
[INFO] [stdout]   |
[INFO] [stdout] 6 | use gtk4::{self as gtk, glib, prelude::*};
[INFO] [stdout]   |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib`
[INFO] [stdout]  --> suite-common/src/file_dialogs.rs:6:30
[INFO] [stdout]   |
[INFO] [stdout] 6 | use gtk4::{self as gtk, gio, glib, prelude::*};
[INFO] [stdout]   |                              ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib`
[INFO] [stdout]  --> suite-common/src/toast_manager.rs:6:25
[INFO] [stdout]   |
[INFO] [stdout] 6 | use gtk4::{self as gtk, glib, prelude::*};
[INFO] [stdout]   |                         ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `adw::prelude`
[INFO] [stdout]  --> suite-common/src/toast_manager.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use adw::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `adw::prelude`
[INFO] [stdout]  --> suite-common/src/toast_manager.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use adw::prelude::*;
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking letters v0.1.0 (/opt/rustwide/workdir/letters)
[INFO] [stderr]     Checking tables v0.1.0 (/opt/rustwide/workdir/tables)
[INFO] [stderr]     Checking decks v0.1.0 (/opt/rustwide/workdir/decks)
[INFO] [stdout] warning: unused import: `gtk4::cairo`
[INFO] [stdout]  --> decks/src/window.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use gtk4::cairo;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `canvas_to_slide` and `slide_to_canvas`
[INFO] [stdout]   --> decks/src/window.rs:15:33
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::canvas::{draw_slide, canvas_to_slide, slide_to_canvas, hit_test_object, snap_to_grid, GRID_SPACING};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `self`
[INFO] [stdout]  --> tables/src/window.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use gtk4::cairo::{self, Context};
[INFO] [stdout]   |                   ^^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> tables/src/grid_render.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk4::cairo::{self, Context};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SheetModel` and `xy_to_cell`
[INFO] [stdout]  --> tables/src/grid_render.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::sheet::{SheetModel, CellBorder, BorderStyle, xy_to_cell, col_label};
[INFO] [stdout]   |                    ^^^^^^^^^^                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Context` and `self`
[INFO] [stdout]  --> tables/src/window.rs:6:19
[INFO] [stdout]   |
[INFO] [stdout] 6 | use gtk4::cairo::{self, Context};
[INFO] [stdout]   |                   ^^^^  ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `self`
[INFO] [stdout]  --> tables/src/grid_render.rs:2:19
[INFO] [stdout]   |
[INFO] [stdout] 2 | use gtk4::cairo::{self, Context};
[INFO] [stdout]   |                   ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `SheetModel` and `xy_to_cell`
[INFO] [stdout]  --> tables/src/grid_render.rs:5:20
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::sheet::{SheetModel, CellBorder, BorderStyle, xy_to_cell, col_label};
[INFO] [stdout]   |                    ^^^^^^^^^^                           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `gtk4::cairo`
[INFO] [stdout]  --> decks/src/window.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use gtk4::cairo;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `canvas_to_slide` and `slide_to_canvas`
[INFO] [stdout]   --> decks/src/window.rs:15:33
[INFO] [stdout]    |
[INFO] [stdout] 15 | use crate::canvas::{draw_slide, canvas_to_slide, slide_to_canvas, hit_test_object, snap_to_grid, GRID_SPACING};
[INFO] [stdout]    |                                 ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TabStop`
[INFO] [stdout]    --> letters/src/ruler.rs:519:27
[INFO] [stdout]     |
[INFO] [stdout] 519 | pub use imp::{DragTarget, TabStop, TabAlignment};
[INFO] [stdout]     |                           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `TabStop`
[INFO] [stdout]    --> letters/src/ruler.rs:519:27
[INFO] [stdout]     |
[INFO] [stdout] 519 | pub use imp::{DragTarget, TabStop, TabAlignment};
[INFO] [stdout]     |                           ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib`
[INFO] [stdout]  --> letters/src/print_preview.rs:5:30
[INFO] [stdout]   |
[INFO] [stdout] 5 | use gtk4::{self as gtk, gio, glib, prelude::*};
[INFO] [stdout]   |                              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `glib`
[INFO] [stdout]  --> letters/src/print_preview.rs:5:30
[INFO] [stdout]   |
[INFO] [stdout] 5 | use gtk4::{self as gtk, gio, glib, prelude::*};
[INFO] [stdout]   |                              ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> tables/src/main.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     return;
[INFO] [stdout]    |     ------ any code following this expression is unreachable
[INFO] [stdout] 51 |     suite.run();
[INFO] [stdout]    |     ^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prelude`
[INFO] [stdout]  --> tables/src/preferences.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use gtk4::{gio, prelude::*};
[INFO] [stdout]   |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> tables/src/main.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     return;
[INFO] [stdout]    |     ------ any code following this expression is unreachable
[INFO] [stdout] 51 |     suite.run();
[INFO] [stdout]    |     ^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prelude`
[INFO] [stdout]  --> tables/src/preferences.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use gtk4::{gio, prelude::*};
[INFO] [stdout]   |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> decks/src/main.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |       return;
[INFO] [stdout]    |       ------ any code following this expression is unreachable
[INFO] [stdout] 60 |
[INFO] [stdout] 61 | /     suite.app.connect_activate(|app| {
[INFO] [stdout] 62 | |         let w = window::DecksWindow::new(app);
[INFO] [stdout] 63 | |         w.present();
[INFO] [stdout] 64 | |     });
[INFO] [stdout]    | |_______^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prelude`
[INFO] [stdout]  --> decks/src/preferences.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use gtk4::{gio, prelude::*};
[INFO] [stdout]   |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::WidgetExt::style_context`: Since 4.10
[INFO] [stdout]   --> letters/src/window.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 |     editor.style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + 1);
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::StyleContextExt::add_provider`: Since 4.10
[INFO] [stdout]   --> letters/src/window.rs:40:28
[INFO] [stdout]    |
[INFO] [stdout] 40 |     editor.style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + 1);
[INFO] [stdout]    |                            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::WidgetExt::style_context`: Since 4.10
[INFO] [stdout]   --> letters/src/window.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |     scroll.style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + 1);
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::StyleContextExt::add_provider`: Since 4.10
[INFO] [stdout]   --> letters/src/window.rs:85:28
[INFO] [stdout]    |
[INFO] [stdout] 85 |     scroll.style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + 1);
[INFO] [stdout]    |                            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]   --> decks/src/main.rs:61:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |       return;
[INFO] [stdout]    |       ------ any code following this expression is unreachable
[INFO] [stdout] 60 |
[INFO] [stdout] 61 | /     suite.app.connect_activate(|app| {
[INFO] [stdout] 62 | |         let w = window::DecksWindow::new(app);
[INFO] [stdout] 63 | |         w.present();
[INFO] [stdout] 64 | |     });
[INFO] [stdout]    | |_______^ unreachable statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `prelude`
[INFO] [stdout]  --> decks/src/preferences.rs:4:17
[INFO] [stdout]   |
[INFO] [stdout] 4 | use gtk4::{gio, prelude::*};
[INFO] [stdout]   |                 ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::WidgetExt::style_context`: Since 4.10
[INFO] [stdout]   --> letters/src/window.rs:40:12
[INFO] [stdout]    |
[INFO] [stdout] 40 |     editor.style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + 1);
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::StyleContextExt::add_provider`: Since 4.10
[INFO] [stdout]   --> letters/src/window.rs:40:28
[INFO] [stdout]    |
[INFO] [stdout] 40 |     editor.style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + 1);
[INFO] [stdout]    |                            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::WidgetExt::style_context`: Since 4.10
[INFO] [stdout]   --> letters/src/window.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |     scroll.style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + 1);
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::StyleContextExt::add_provider`: Since 4.10
[INFO] [stdout]   --> letters/src/window.rs:85:28
[INFO] [stdout]    |
[INFO] [stdout] 85 |     scroll.style_context().add_provider(&css_provider, gtk::STYLE_PROVIDER_PRIORITY_APPLICATION + 1);
[INFO] [stdout]    |                            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::DialogExt::connect_response`: Since 4.10
[INFO] [stdout]    --> letters/src/window.rs:474:24
[INFO] [stdout]     |
[INFO] [stdout] 474 |                 dialog.connect_response(move |dlg, _response| {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::WidgetExt::show`: Since 4.10
[INFO] [stdout]    --> letters/src/window.rs:487:24
[INFO] [stdout]     |
[INFO] [stdout] 487 |                 dialog.show();
[INFO] [stdout]     |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:292:29
[INFO] [stdout]     |
[INFO] [stdout] 292 |                         let mut st = s.borrow_mut();
[INFO] [stdout]     |                             ----^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:300:25
[INFO] [stdout]     |
[INFO] [stdout] 300 |                     let mut st = s.borrow_mut();
[INFO] [stdout]     |                         ----^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:338:25
[INFO] [stdout]     |
[INFO] [stdout] 338 |                     let mut st = s2.borrow_mut();
[INFO] [stdout]     |                         ----^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:398:33
[INFO] [stdout]     |
[INFO] [stdout] 398 | ...                   let mut st = s2.borrow_mut();
[INFO] [stdout]     |                           ----^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:418:25
[INFO] [stdout]     |
[INFO] [stdout] 418 |                     let mut st = s.borrow_mut();
[INFO] [stdout]     |                         ----^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:664:21
[INFO] [stdout]     |
[INFO] [stdout] 664 |                 let mut st = s.borrow_mut();
[INFO] [stdout]     |                     ----^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:687:21
[INFO] [stdout]     |
[INFO] [stdout] 687 |                 let mut st = s.borrow_mut();
[INFO] [stdout]     |                     ----^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:708:21
[INFO] [stdout]     |
[INFO] [stdout] 708 |                 let mut st = s.borrow_mut();
[INFO] [stdout]     |                     ----^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> decks/src/window.rs:588:54
[INFO] [stdout]     |
[INFO] [stdout] 588 |             key.connect_key_pressed(move |_, keyval, code, mods| {
[INFO] [stdout]     |                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ss2`
[INFO] [stdout]    --> decks/src/window.rs:536:29
[INFO] [stdout]     |
[INFO] [stdout] 536 |                         let ss2 = ss.clone();
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ss2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ov3`
[INFO] [stdout]    --> decks/src/window.rs:565:29
[INFO] [stdout]     |
[INFO] [stdout] 565 |                         let ov3 = overlay.clone();
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ov3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ss`
[INFO] [stdout]    --> decks/src/window.rs:386:25
[INFO] [stdout]     |
[INFO] [stdout] 386 |                     let ss = ss.clone(); let cs = cs.clone();
[INFO] [stdout]     |                         ^^ help: if this is intentional, prefix it with an underscore: `_ss`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w2`
[INFO] [stdout]    --> decks/src/window.rs:387:54
[INFO] [stdout]     |
[INFO] [stdout] 387 |                     let cs_ref = cs_ref.clone(); let w2 = w.clone();
[INFO] [stdout]     |                                                      ^^ help: if this is intentional, prefix it with an underscore: `_w2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `list`
[INFO] [stdout]    --> decks/src/window.rs:191:47
[INFO] [stdout]     |
[INFO] [stdout] 191 |         slide_list.connect_row_selected(move |list, row| {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_list`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sl`
[INFO] [stdout]    --> decks/src/window.rs:184:13
[INFO] [stdout]     |
[INFO] [stdout] 184 |         let sl = slide_list.clone();
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_sl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ss`
[INFO] [stdout]    --> decks/src/window.rs:325:17
[INFO] [stdout]     |
[INFO] [stdout] 325 |             let ss = slides.clone();
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_ss`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cs2`
[INFO] [stdout]    --> decks/src/window.rs:451:17
[INFO] [stdout]     |
[INFO] [stdout] 451 |             let cs2 = cs.clone();
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_cs2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `so`
[INFO] [stdout]    --> decks/src/window.rs:504:17
[INFO] [stdout]     |
[INFO] [stdout] 504 |             let so = selected_object.clone();
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_so`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `m`
[INFO] [stdout]    --> decks/src/window.rs:586:17
[INFO] [stdout]     |
[INFO] [stdout] 586 |             let m = masters.clone();
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h2`
[INFO] [stdout]    --> tables/src/window.rs:327:17
[INFO] [stdout]     |
[INFO] [stdout] 327 |             let h2 = h.clone();
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_h2`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::DialogExt::connect_response`: Since 4.10
[INFO] [stdout]    --> letters/src/window.rs:474:24
[INFO] [stdout]     |
[INFO] [stdout] 474 |                 dialog.connect_response(move |dlg, _response| {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated method `gtk4::prelude::WidgetExt::show`: Since 4.10
[INFO] [stdout]    --> letters/src/window.rs:487:24
[INFO] [stdout]     |
[INFO] [stdout] 487 |                 dialog.show();
[INFO] [stdout]     |                        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:292:29
[INFO] [stdout]     |
[INFO] [stdout] 292 |                         let mut st = s.borrow_mut();
[INFO] [stdout]     |                             ----^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:300:25
[INFO] [stdout]     |
[INFO] [stdout] 300 |                     let mut st = s.borrow_mut();
[INFO] [stdout]     |                         ----^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:338:25
[INFO] [stdout]     |
[INFO] [stdout] 338 |                     let mut st = s2.borrow_mut();
[INFO] [stdout]     |                         ----^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:398:33
[INFO] [stdout]     |
[INFO] [stdout] 398 | ...                   let mut st = s2.borrow_mut();
[INFO] [stdout]     |                           ----^^
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:418:25
[INFO] [stdout]     |
[INFO] [stdout] 418 |                     let mut st = s.borrow_mut();
[INFO] [stdout]     |                         ----^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:664:21
[INFO] [stdout]     |
[INFO] [stdout] 664 |                 let mut st = s.borrow_mut();
[INFO] [stdout]     |                     ----^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:687:21
[INFO] [stdout]     |
[INFO] [stdout] 687 |                 let mut st = s.borrow_mut();
[INFO] [stdout]     |                     ----^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tables/src/window.rs:708:21
[INFO] [stdout]     |
[INFO] [stdout] 708 |                 let mut st = s.borrow_mut();
[INFO] [stdout]     |                     ----^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h2`
[INFO] [stdout]    --> tables/src/window.rs:327:17
[INFO] [stdout]     |
[INFO] [stdout] 327 |             let h2 = h.clone();
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_h2`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lw`
[INFO] [stdout]   --> tables/src/grid_render.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let lw = 1.5;
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_lw`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `code`
[INFO] [stdout]    --> decks/src/window.rs:588:54
[INFO] [stdout]     |
[INFO] [stdout] 588 |             key.connect_key_pressed(move |_, keyval, code, mods| {
[INFO] [stdout]     |                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_code`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ss2`
[INFO] [stdout]    --> decks/src/window.rs:536:29
[INFO] [stdout]     |
[INFO] [stdout] 536 |                         let ss2 = ss.clone();
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ss2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ov3`
[INFO] [stdout]    --> decks/src/window.rs:565:29
[INFO] [stdout]     |
[INFO] [stdout] 565 |                         let ov3 = overlay.clone();
[INFO] [stdout]     |                             ^^^ help: if this is intentional, prefix it with an underscore: `_ov3`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ss`
[INFO] [stdout]    --> decks/src/window.rs:386:25
[INFO] [stdout]     |
[INFO] [stdout] 386 |                     let ss = ss.clone(); let cs = cs.clone();
[INFO] [stdout]     |                         ^^ help: if this is intentional, prefix it with an underscore: `_ss`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w2`
[INFO] [stdout]    --> decks/src/window.rs:387:54
[INFO] [stdout]     |
[INFO] [stdout] 387 |                     let cs_ref = cs_ref.clone(); let w2 = w.clone();
[INFO] [stdout]     |                                                      ^^ help: if this is intentional, prefix it with an underscore: `_w2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `list`
[INFO] [stdout]    --> decks/src/window.rs:191:47
[INFO] [stdout]     |
[INFO] [stdout] 191 |         slide_list.connect_row_selected(move |list, row| {
[INFO] [stdout]     |                                               ^^^^ help: if this is intentional, prefix it with an underscore: `_list`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sl`
[INFO] [stdout]    --> decks/src/window.rs:184:13
[INFO] [stdout]     |
[INFO] [stdout] 184 |         let sl = slide_list.clone();
[INFO] [stdout]     |             ^^ help: if this is intentional, prefix it with an underscore: `_sl`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ss`
[INFO] [stdout]    --> decks/src/window.rs:325:17
[INFO] [stdout]     |
[INFO] [stdout] 325 |             let ss = slides.clone();
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_ss`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cs2`
[INFO] [stdout]    --> decks/src/window.rs:451:17
[INFO] [stdout]     |
[INFO] [stdout] 451 |             let cs2 = cs.clone();
[INFO] [stdout]     |                 ^^^ help: if this is intentional, prefix it with an underscore: `_cs2`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `so`
[INFO] [stdout]    --> decks/src/window.rs:504:17
[INFO] [stdout]     |
[INFO] [stdout] 504 |             let so = selected_object.clone();
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_so`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `m`
[INFO] [stdout]    --> decks/src/window.rs:586:17
[INFO] [stdout]     |
[INFO] [stdout] 586 |             let m = masters.clone();
[INFO] [stdout]     |                 ^ help: if this is intentional, prefix it with an underscore: `_m`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `grid_data` is never used
[INFO] [stdout]   --> tables/src/window.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl AppState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     fn grid_data(&self) -> Vec<Vec<String>> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `drawing_area`, `h_adj`, `v_adj`, `fx_entry`, `stack`, and `undo` are never read
[INFO] [stdout]    --> tables/src/window.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct TablesWindow {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 171 |     pub window: adw::ApplicationWindow,
[INFO] [stdout] 172 |     drawing_area: gtk4::DrawingArea,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 173 |     h_adj: gtk4::Adjustment,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 174 |     v_adj: gtk4::Adjustment,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 175 |     fx_entry: gtk4::Entry,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 176 |     stack: gtk4::Stack,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 177 |     undo: Rc<RefCell<UndoManager<SheetState>>>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `col` is never read
[INFO] [stdout]   --> tables/src/undo.rs:67:9
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct SortCmd {
[INFO] [stdout]    |            ------- field in this struct
[INFO] [stdout] 67 |     pub col: usize,
[INFO] [stdout]    |         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `engine_idx` is never read
[INFO] [stdout]    --> tables/src/sheet.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct SheetModel {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 133 |     engine_idx: usize,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SheetModel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> tables/src/window.rs:29:14
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn sheet(&self) -> std::cell::Ref<SheetModel> {
[INFO] [stdout]    |              ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |              |
[INFO] [stdout]    |              the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn sheet(&self) -> std::cell::Ref<'_, SheetModel> {
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> tables/src/window.rs:33:18
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn sheet_mut(&self) -> std::cell::RefMut<SheetModel> {
[INFO] [stdout]    |                  ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn sheet_mut(&self) -> std::cell::RefMut<'_, SheetModel> {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `lw`
[INFO] [stdout]   --> tables/src/grid_render.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let lw = 1.5;
[INFO] [stdout]    |         ^^ help: if this is intentional, prefix it with an underscore: `_lw`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `grid_data` is never used
[INFO] [stdout]   --> tables/src/window.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl AppState {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 37 |     fn grid_data(&self) -> Vec<Vec<String>> {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `drawing_area`, `h_adj`, `v_adj`, `fx_entry`, `stack`, and `undo` are never read
[INFO] [stdout]    --> tables/src/window.rs:172:5
[INFO] [stdout]     |
[INFO] [stdout] 170 | pub struct TablesWindow {
[INFO] [stdout]     |            ------------ fields in this struct
[INFO] [stdout] 171 |     pub window: adw::ApplicationWindow,
[INFO] [stdout] 172 |     drawing_area: gtk4::DrawingArea,
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 173 |     h_adj: gtk4::Adjustment,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 174 |     v_adj: gtk4::Adjustment,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 175 |     fx_entry: gtk4::Entry,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 176 |     stack: gtk4::Stack,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 177 |     undo: Rc<RefCell<UndoManager<SheetState>>>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `sheets` and `active_sheet` are never read
[INFO] [stdout]   --> tables/src/undo.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub struct SheetState {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 12 |     pub sheets: Vec<SheetModel>,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout] 13 |     pub active_sheet: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `sheet` and `sheet_mut` are never used
[INFO] [stdout]   --> tables/src/undo.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl SheetState {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 17 |     pub fn sheet(&self) -> &SheetModel { &self.sheets[self.active_sheet] }
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 18 |     pub fn sheet_mut(&mut self) -> &mut SheetModel { &mut self.sheets[self.active_sheet] }
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CellEditCmd` is never constructed
[INFO] [stdout]   --> tables/src/undo.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct CellEditCmd {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ColResizeCmd` is never constructed
[INFO] [stdout]   --> tables/src/undo.rs:48:12
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub struct ColResizeCmd {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SortCmd` is never constructed
[INFO] [stdout]   --> tables/src/undo.rs:66:12
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct SortCmd {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FormatCmd` is never constructed
[INFO] [stdout]   --> tables/src/undo.rs:98:12
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub struct FormatCmd {
[INFO] [stdout]    |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BorderCmd` is never constructed
[INFO] [stdout]    --> tables/src/undo.rs:117:12
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct BorderCmd {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MergeCmd` is never constructed
[INFO] [stdout]    --> tables/src/undo.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub struct MergeCmd {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `FreezeCmd` is never constructed
[INFO] [stdout]    --> tables/src/undo.rs:157:12
[INFO] [stdout]     |
[INFO] [stdout] 157 | pub struct FreezeCmd {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `engine_idx` is never read
[INFO] [stdout]    --> tables/src/sheet.rs:133:5
[INFO] [stdout]     |
[INFO] [stdout] 117 | pub struct SheetModel {
[INFO] [stdout]     |            ---------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 133 |     engine_idx: usize,
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SheetModel` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> tables/src/window.rs:29:14
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn sheet(&self) -> std::cell::Ref<SheetModel> {
[INFO] [stdout]    |              ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |              |
[INFO] [stdout]    |              the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 29 |     fn sheet(&self) -> std::cell::Ref<'_, SheetModel> {
[INFO] [stdout]    |                                       +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> tables/src/window.rs:33:18
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn sheet_mut(&self) -> std::cell::RefMut<SheetModel> {
[INFO] [stdout]    |                  ^^^^^     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                  |
[INFO] [stdout]    |                  the lifetime is elided here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 33 |     fn sheet_mut(&self) -> std::cell::RefMut<'_, SheetModel> {
[INFO] [stdout]    |                                              +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `w`
[INFO] [stdout]    --> decks/src/undo.rs:325:46
[INFO] [stdout]     |
[INFO] [stdout] 325 |             SlideObject::Image { path, x, y, w, h } => {
[INFO] [stdout]     |                                              ^ help: try ignoring the field: `w: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> decks/src/undo.rs:325:49
[INFO] [stdout]     |
[INFO] [stdout] 325 |             SlideObject::Image { path, x, y, w, h } => {
[INFO] [stdout]     |                                                 ^ help: try ignoring the field: `h: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> decks/src/markdown.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let mut attrs = pango::AttrList::new();
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> decks/src/window.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct DecksWindow {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 25 |     pub window: adw::ApplicationWindow,
[INFO] [stdout] 26 |     split_view: adw::OverlaySplitView,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 27 |     slide_list: gtk::ListBox,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 28 |     canvas: gtk::DrawingArea,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 29 |     slides: Rc<RefCell<Vec<Slide>>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 30 |     masters: Rc<RefCell<Vec<MasterSlide>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 31 |     current_slide: Rc<Cell<usize>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     selected_object: Rc<Cell<Option<usize>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     transition: Rc<RefCell<TransitionState>>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 34 |     undo: Rc<RefCell<UndoManager<Vec<Slide>>>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `masters` is never read
[INFO] [stdout]   --> decks/src/engine.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Deck {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 14 |     pub slides: Vec<Slide>,
[INFO] [stdout] 15 |     pub masters: Vec<MasterSlide>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Deck` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `background`, and `default_font` are never read
[INFO] [stdout]   --> decks/src/engine.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct MasterSlide {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 29 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 30 |     pub background: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 31 |     pub default_font: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MasterSlide` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_typst` is never used
[INFO] [stdout]  --> decks/src/export.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn to_typst(slides: &[crate::engine::Slide]) -> String {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_pdf` is never used
[INFO] [stdout]   --> decks/src/export.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn to_pdf(slides: &[crate::engine::Slide], path: &str) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `canvas_to_slide` is never used
[INFO] [stdout]   --> decks/src/canvas.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn canvas_to_slide(x: f64, y: f64, canvas_w: f64, canvas_h: f64) -> (f64, f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_markdown` is never used
[INFO] [stdout]  --> decks/src/markdown.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn render_markdown(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> decks/src/markdown.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn render_text(
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> decks/src/markdown.rs:57:9
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let mut attrs = pango::AttrList::new();
[INFO] [stdout]    |         ----^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> decks/src/window.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 24 | pub struct DecksWindow {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 25 |     pub window: adw::ApplicationWindow,
[INFO] [stdout] 26 |     split_view: adw::OverlaySplitView,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 27 |     slide_list: gtk::ListBox,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 28 |     canvas: gtk::DrawingArea,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 29 |     slides: Rc<RefCell<Vec<Slide>>>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 30 |     masters: Rc<RefCell<Vec<MasterSlide>>>,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 31 |     current_slide: Rc<Cell<usize>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^
[INFO] [stdout] 32 |     selected_object: Rc<Cell<Option<usize>>>,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     transition: Rc<RefCell<TransitionState>>,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 34 |     undo: Rc<RefCell<UndoManager<Vec<Slide>>>>,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `masters` is never read
[INFO] [stdout]   --> decks/src/engine.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct Deck {
[INFO] [stdout]    |            ---- field in this struct
[INFO] [stdout] 14 |     pub slides: Vec<Slide>,
[INFO] [stdout] 15 |     pub masters: Vec<MasterSlide>,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Deck` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `title` is never read
[INFO] [stdout]   --> decks/src/engine.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct Slide {
[INFO] [stdout]    |            ----- field in this struct
[INFO] [stdout] 20 |     pub title: String,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Slide` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name`, `background`, and `default_font` are never read
[INFO] [stdout]   --> decks/src/engine.rs:29:9
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct MasterSlide {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 29 |     pub name: String,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 30 |     pub background: String,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 31 |     pub default_font: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MasterSlide` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> decks/src/engine.rs:44:12
[INFO] [stdout]    |
[INFO] [stdout] 43 | impl Deck {
[INFO] [stdout]    | --------- associated function in this implementation
[INFO] [stdout] 44 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_typst` is never used
[INFO] [stdout]  --> decks/src/export.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn to_typst(slides: &[crate::engine::Slide]) -> String {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `to_pdf` is never used
[INFO] [stdout]   --> decks/src/export.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn to_pdf(slides: &[crate::engine::Slide], path: &str) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `canvas_to_slide` is never used
[INFO] [stdout]   --> decks/src/canvas.rs:57:8
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub fn canvas_to_slide(x: f64, y: f64, canvas_w: f64, canvas_h: f64) -> (f64, f64) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Fade`, `CoverLeft`, and `SplitHorizontal` are never constructed
[INFO] [stdout]   --> decks/src/transition.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub enum TransitionType {
[INFO] [stdout]    |          -------------- variants in this enum
[INFO] [stdout] 13 |     None,
[INFO] [stdout] 14 |     Fade,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     CoverLeft,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 18 |     SplitHorizontal,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TransitionType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_markdown` is never used
[INFO] [stdout]  --> decks/src/markdown.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn render_markdown(
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `render_text` is never used
[INFO] [stdout]   --> decks/src/markdown.rs:52:4
[INFO] [stdout]    |
[INFO] [stdout] 52 | fn render_text(
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdwDialogExt`
[INFO] [stdout]  --> letters/src/window.rs:7:58
[INFO] [stdout]   |
[INFO] [stdout] 7 | use adw::prelude::{AlertDialogExt, AlertDialogExtManual, AdwDialogExt};
[INFO] [stdout]   |                                                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]    --> letters/src/window.rs:626:25
[INFO] [stdout]     |
[INFO] [stdout] 626 |             if let Some(buf) = active_buffer(&tv) {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tv`
[INFO] [stdout]    --> letters/src/window.rs:351:17
[INFO] [stdout]     |
[INFO] [stdout] 351 |             let tv = tab_view.clone();
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_tv`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AdwDialogExt`
[INFO] [stdout]  --> letters/src/window.rs:7:58
[INFO] [stdout]   |
[INFO] [stdout] 7 | use adw::prelude::{AlertDialogExt, AlertDialogExtManual, AdwDialogExt};
[INFO] [stdout]   |                                                          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wc`
[INFO] [stdout]    --> letters/src/window.rs:806:62
[INFO] [stdout]     |
[INFO] [stdout] 806 | ...w::TabView, st: &gtk4::Stack, wc: &gtk4::Label, win: &adw::ApplicationWindow, app: &adw::Application, settings: &gio::Settings) {
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_wc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `buf`
[INFO] [stdout]    --> letters/src/window.rs:626:25
[INFO] [stdout]     |
[INFO] [stdout] 626 |             if let Some(buf) = active_buffer(&tv) {
[INFO] [stdout]     |                         ^^^ help: if this is intentional, prefix it with an underscore: `_buf`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `tv`
[INFO] [stdout]    --> letters/src/window.rs:351:17
[INFO] [stdout]     |
[INFO] [stdout] 351 |             let tv = tab_view.clone();
[INFO] [stdout]     |                 ^^ help: if this is intentional, prefix it with an underscore: `_tv`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `wc`
[INFO] [stdout]    --> letters/src/window.rs:806:62
[INFO] [stdout]     |
[INFO] [stdout] 806 | ...w::TabView, st: &gtk4::Stack, wc: &gtk4::Label, win: &adw::ApplicationWindow, app: &adw::Application, settings: &gio::Settings) {
[INFO] [stdout]     |                                  ^^ help: if this is intentional, prefix it with an underscore: `_wc`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> letters/src/window.rs:1746:29
[INFO] [stdout]      |
[INFO] [stdout] 1746 |                         let mut start = line_start; // now at content start
[INFO] [stdout]      |                             ----^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> letters/src/window.rs:1765:25
[INFO] [stdout]      |
[INFO] [stdout] 1765 |                     let mut start = line_start;
[INFO] [stdout]      |                         ----^^^^^
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `content`
[INFO] [stdout]     --> letters/src/window.rs:1737:25
[INFO] [stdout]      |
[INFO] [stdout] 1737 |                     let content = trimmed[prefix.len()..].to_string();
[INFO] [stdout]      |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `content`
[INFO] [stdout]     --> letters/src/window.rs:1758:21
[INFO] [stdout]      |
[INFO] [stdout] 1758 |                 let content = trimmed[2..].to_string();
[INFO] [stdout]      |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> letters/src/window.rs:1746:29
[INFO] [stdout]      |
[INFO] [stdout] 1746 |                         let mut start = line_start; // now at content start
[INFO] [stdout]      |                             ----^^^^^
[INFO] [stdout]      |                             |
[INFO] [stdout]      |                             help: remove this `mut`
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> letters/src/window.rs:1765:25
[INFO] [stdout]      |
[INFO] [stdout] 1765 |                     let mut start = line_start;
[INFO] [stdout]      |                         ----^^^^^
[INFO] [stdout]      |                         |
[INFO] [stdout]      |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `content`
[INFO] [stdout]     --> letters/src/window.rs:1737:25
[INFO] [stdout]      |
[INFO] [stdout] 1737 |                     let content = trimmed[prefix.len()..].to_string();
[INFO] [stdout]      |                         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `content`
[INFO] [stdout]     --> letters/src/window.rs:1758:21
[INFO] [stdout]      |
[INFO] [stdout] 1758 |                 let content = trimmed[2..].to_string();
[INFO] [stdout]      |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_content`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> letters/src/ruler.rs:206:18
[INFO] [stdout]     |
[INFO] [stdout] 206 |             for (i, ts) in self.tab_stops.borrow().iter().enumerate() {
[INFO] [stdout]     |                  ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]    --> letters/src/ruler.rs:224:33
[INFO] [stdout]     |
[INFO] [stdout] 224 |         fn size_allocate(&self, width: i32, _height: i32, _baseline: i32) {
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]    --> letters/src/ruler.rs:206:18
[INFO] [stdout]     |
[INFO] [stdout] 206 |             for (i, ts) in self.tab_stops.borrow().iter().enumerate() {
[INFO] [stdout]     |                  ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `width`
[INFO] [stdout]    --> letters/src/ruler.rs:224:33
[INFO] [stdout]     |
[INFO] [stdout] 224 |         fn size_allocate(&self, width: i32, _height: i32, _baseline: i32) {
[INFO] [stdout]     |                                 ^^^^^ help: if this is intentional, prefix it with an underscore: `_width`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> letters/src/spell.rs:190:19
[INFO] [stdout]     |
[INFO] [stdout] 190 |         if let Ok(mut s) = self.checker.try_borrow_mut() {
[INFO] [stdout]     |                   ----^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word`
[INFO] [stdout]    --> letters/src/spell.rs:189:36
[INFO] [stdout]     |
[INFO] [stdout] 189 |     pub fn set_current_word(&self, word: &str) {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> letters/src/spell.rs:190:19
[INFO] [stdout]     |
[INFO] [stdout] 190 |         if let Ok(mut s) = self.checker.try_borrow_mut() {
[INFO] [stdout]     |                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> letters/src/docx_bridge.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let mut offset = para_offset;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]    --> letters/src/docx_bridge.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 187 |     let len = para_text.len() as i32;
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> letters/src/docx_bridge.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let mut offset = para_offset;
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> letters/src/styles.rs:234:17
[INFO] [stdout]     |
[INFO] [stdout] 234 |             let mut s = buf.cursor_position();
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sheet`
[INFO] [stdout]    --> letters/src/styles.rs:231:43
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub fn apply_style(buf: &gtk::TextBuffer, sheet: &StyleSheet, style_name: &str) {
[INFO] [stdout]     |                                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_sheet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> letters/src/spell.rs:190:19
[INFO] [stdout]     |
[INFO] [stdout] 190 |         if let Ok(mut s) = self.checker.try_borrow_mut() {
[INFO] [stdout]     |                   ----^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `word`
[INFO] [stdout]    --> letters/src/spell.rs:189:36
[INFO] [stdout]     |
[INFO] [stdout] 189 |     pub fn set_current_word(&self, word: &str) {
[INFO] [stdout]     |                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_word`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `s`
[INFO] [stdout]    --> letters/src/spell.rs:190:19
[INFO] [stdout]     |
[INFO] [stdout] 190 |         if let Ok(mut s) = self.checker.try_borrow_mut() {
[INFO] [stdout]     |                   ^^^^^ help: if this is intentional, prefix it with an underscore: `_s`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stack`, `word_count_label`, and `settings` are never read
[INFO] [stdout]    --> letters/src/window.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub struct LettersWindow {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 149 |     stack: gtk4::Stack,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 150 |     word_count_label: gtk4::Label,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 151 |     settings: gio::Settings,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_tag_to_active` is never used
[INFO] [stdout]    --> letters/src/window.rs:990:4
[INFO] [stdout]     |
[INFO] [stdout] 990 | fn apply_tag_to_active(tv: &adw::TabView, tag_name: &str) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_tag` is never used
[INFO] [stdout]     --> letters/src/window.rs:1002:4
[INFO] [stdout]      |
[INFO] [stdout] 1002 | fn toggle_tag(tv: &adw::TabView, tag_name: &str) {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_inline_bold` is never used
[INFO] [stdout]     --> letters/src/window.rs:1022:4
[INFO] [stdout]      |
[INFO] [stdout] 1022 | fn toggle_inline_bold(tv: &adw::TabView)  { toggle_tag(tv, "bold"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_inline_italic` is never used
[INFO] [stdout]     --> letters/src/window.rs:1023:4
[INFO] [stdout]      |
[INFO] [stdout] 1023 | fn toggle_inline_italic(tv: &adw::TabView) { toggle_tag(tv, "italic"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_inline_underline` is never used
[INFO] [stdout]     --> letters/src/window.rs:1024:4
[INFO] [stdout]      |
[INFO] [stdout] 1024 | fn toggle_inline_underline(tv: &adw::TabView) { toggle_tag(tv, "underline"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_inline_strikethrough` is never used
[INFO] [stdout]     --> letters/src/window.rs:1025:4
[INFO] [stdout]      |
[INFO] [stdout] 1025 | fn toggle_inline_strikethrough(tv: &adw::TabView) { toggle_tag(tv, "strikethrough"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_highlight` is never used
[INFO] [stdout]     --> letters/src/window.rs:1026:4
[INFO] [stdout]      |
[INFO] [stdout] 1026 | fn toggle_highlight(tv: &adw::TabView) { toggle_tag(tv, "highlight"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `register_formatting_actions` is never used
[INFO] [stdout]     --> letters/src/window.rs:1029:8
[INFO] [stdout]      |
[INFO] [stdout] 1028 | impl LettersWindow {
[INFO] [stdout]      | ------------------ associated function in this implementation
[INFO] [stdout] 1029 |     fn register_formatting_actions(tv: &adw::TabView, app: &adw::Application) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_text` is never used
[INFO] [stdout]     --> letters/src/window.rs:1578:4
[INFO] [stdout]      |
[INFO] [stdout] 1578 | fn line_text(buf: &gtk::TextBuffer, iter: &gtk::TextIter) -> String {
[INFO] [stdout]      |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_list` is never used
[INFO] [stdout]     --> letters/src/window.rs:1586:4
[INFO] [stdout]      |
[INFO] [stdout] 1586 | fn toggle_list(tv: &adw::TabView, kind: &str) {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> letters/src/engine.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Document {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_pdf` is never used
[INFO] [stdout]    --> letters/src/engine.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn export_pdf(text: &str, output_path: &str) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEADER_HEIGHT` is never used
[INFO] [stdout]   --> letters/src/page_container.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const HEADER_HEIGHT: f64 = 36.0;  // header area in points
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FOOTER_HEIGHT` is never used
[INFO] [stdout]   --> letters/src/page_container.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const FOOTER_HEIGHT: f64 = 36.0;  // footer area in points
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TICK_MINOR_INTERVAL` is never used
[INFO] [stdout]   --> letters/src/ruler.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const TICK_MINOR_INTERVAL: f64 = 18.0;  // ~1/4 inch
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_word` and `suggestions` are never used
[INFO] [stdout]   --> letters/src/spell.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl SpellChecker {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn add_word(&self, word: &str) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn suggestions(&self, word: &str) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `checker` is never read
[INFO] [stdout]    --> letters/src/spell.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct SpellCheckHandle {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 129 |     checker: Rc<RefCell<SpellChecker>>,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpellCheckHandle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `word_at_cursor`, `suggestions`, `add_word`, `is_correct`, `replace_last`, and `set_current_word` are never used
[INFO] [stdout]    --> letters/src/spell.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl SpellCheckHandle {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] 134 |     pub fn word_at_cursor(&self, buffer: &gtk::TextBuffer) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn suggestions(&self, word: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn add_word(&self, word: &str) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn is_correct(&self, word: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn replace_last(&self, buffer: &gtk::TextBuffer, replacement: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn set_current_word(&self, word: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `basic_suggest` is never used
[INFO] [stdout]    --> letters/src/spell.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn basic_suggest(dict: &zspell::Dictionary, word: &str) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_candidates` is never used
[INFO] [stdout]    --> letters/src/spell.rs:214:4
[INFO] [stdout]     |
[INFO] [stdout] 214 | fn generate_candidates(word: &str) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `levenshtein` is never used
[INFO] [stdout]    --> letters/src/spell.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn levenshtein(a: &str, b: &str) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `word_at_point` is never used
[INFO] [stdout]    --> letters/src/spell.rs:273:8
[INFO] [stdout]     |
[INFO] [stdout] 273 | pub fn word_at_point(tv: &gtk::TextView, x: f64, y: f64) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_spell_menu` is never used
[INFO] [stdout]    --> letters/src/spell.rs:299:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn make_spell_menu(word: &str, suggestions: &[String]) -> gio::Menu {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_buffer_to_docx` is never used
[INFO] [stdout]   --> letters/src/docx_bridge.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn write_buffer_to_docx(path: &str, buf: &gtk::TextBuffer) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_buffer_to_docx_preserving_styles` is never used
[INFO] [stdout]   --> letters/src/docx_bridge.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn write_buffer_to_docx_preserving_styles(path: &str, buf: &gtk::TextBuffer, source_path: &str) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `modify_and_sync` and `names` are never used
[INFO] [stdout]    --> letters/src/styles.rs:97:12
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl StyleSheet {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn modify_and_sync<F: FnOnce(&mut Style)>(&mut self, name: &str, tag_table: &gtk::TextTagTable, f: F) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn names(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `index` and `line_count` are never read
[INFO] [stdout]   --> letters/src/layout.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Page {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 11 |     /// 0-based page index.
[INFO] [stdout] 12 |     pub index: usize,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub line_count: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Page` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> letters/src/docx_bridge.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let mut offset = para_offset;
[INFO] [stdout]     |         ----^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `len`
[INFO] [stdout]    --> letters/src/docx_bridge.rs:187:9
[INFO] [stdout]     |
[INFO] [stdout] 187 |     let len = para_text.len() as i32;
[INFO] [stdout]     |         ^^^ help: if this is intentional, prefix it with an underscore: `_len`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `offset`
[INFO] [stdout]    --> letters/src/docx_bridge.rs:189:9
[INFO] [stdout]     |
[INFO] [stdout] 189 |     let mut offset = para_offset;
[INFO] [stdout]     |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_offset`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> letters/src/styles.rs:234:17
[INFO] [stdout]     |
[INFO] [stdout] 234 |             let mut s = buf.cursor_position();
[INFO] [stdout]     |                 ----^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sheet`
[INFO] [stdout]    --> letters/src/styles.rs:231:43
[INFO] [stdout]     |
[INFO] [stdout] 231 | pub fn apply_style(buf: &gtk::TextBuffer, sheet: &StyleSheet, style_name: &str) {
[INFO] [stdout]     |                                           ^^^^^ help: if this is intentional, prefix it with an underscore: `_sheet`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> letters/src/styles.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |             drop(style); // end mutable borrow
[INFO] [stdout]     |             ^^^^^-----^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  argument has type `&mut styles::Style`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 102 -             drop(style); // end mutable borrow
[INFO] [stdout] 102 +             let _ = style; // end mutable borrow
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `stack`, `word_count_label`, and `settings` are never read
[INFO] [stdout]    --> letters/src/window.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub struct LettersWindow {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 149 |     stack: gtk4::Stack,
[INFO] [stdout]     |     ^^^^^
[INFO] [stdout] 150 |     word_count_label: gtk4::Label,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 151 |     settings: gio::Settings,
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_tag_to_active` is never used
[INFO] [stdout]    --> letters/src/window.rs:990:4
[INFO] [stdout]     |
[INFO] [stdout] 990 | fn apply_tag_to_active(tv: &adw::TabView, tag_name: &str) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_tag` is never used
[INFO] [stdout]     --> letters/src/window.rs:1002:4
[INFO] [stdout]      |
[INFO] [stdout] 1002 | fn toggle_tag(tv: &adw::TabView, tag_name: &str) {
[INFO] [stdout]      |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_inline_bold` is never used
[INFO] [stdout]     --> letters/src/window.rs:1022:4
[INFO] [stdout]      |
[INFO] [stdout] 1022 | fn toggle_inline_bold(tv: &adw::TabView)  { toggle_tag(tv, "bold"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_inline_italic` is never used
[INFO] [stdout]     --> letters/src/window.rs:1023:4
[INFO] [stdout]      |
[INFO] [stdout] 1023 | fn toggle_inline_italic(tv: &adw::TabView) { toggle_tag(tv, "italic"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_inline_underline` is never used
[INFO] [stdout]     --> letters/src/window.rs:1024:4
[INFO] [stdout]      |
[INFO] [stdout] 1024 | fn toggle_inline_underline(tv: &adw::TabView) { toggle_tag(tv, "underline"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_inline_strikethrough` is never used
[INFO] [stdout]     --> letters/src/window.rs:1025:4
[INFO] [stdout]      |
[INFO] [stdout] 1025 | fn toggle_inline_strikethrough(tv: &adw::TabView) { toggle_tag(tv, "strikethrough"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_highlight` is never used
[INFO] [stdout]     --> letters/src/window.rs:1026:4
[INFO] [stdout]      |
[INFO] [stdout] 1026 | fn toggle_highlight(tv: &adw::TabView) { toggle_tag(tv, "highlight"); }
[INFO] [stdout]      |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `register_formatting_actions` is never used
[INFO] [stdout]     --> letters/src/window.rs:1029:8
[INFO] [stdout]      |
[INFO] [stdout] 1028 | impl LettersWindow {
[INFO] [stdout]      | ------------------ associated function in this implementation
[INFO] [stdout] 1029 |     fn register_formatting_actions(tv: &adw::TabView, app: &adw::Application) {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `line_text` is never used
[INFO] [stdout]     --> letters/src/window.rs:1578:4
[INFO] [stdout]      |
[INFO] [stdout] 1578 | fn line_text(buf: &gtk::TextBuffer, iter: &gtk::TextIter) -> String {
[INFO] [stdout]      |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `toggle_list` is never used
[INFO] [stdout]     --> letters/src/window.rs:1586:4
[INFO] [stdout]      |
[INFO] [stdout] 1586 | fn toggle_list(tv: &adw::TabView, kind: &str) {
[INFO] [stdout]      |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> letters/src/engine.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl Document {
[INFO] [stdout]    | ------------- associated function in this implementation
[INFO] [stdout] 23 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read` is never used
[INFO] [stdout]   --> letters/src/engine.rs:37:8
[INFO] [stdout]    |
[INFO] [stdout] 37 | pub fn read(path: &str) -> Result<Document, String> {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `export_pdf` is never used
[INFO] [stdout]    --> letters/src/engine.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn export_pdf(text: &str, output_path: &str) -> Result<(), String> {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `markdown_to_typst` is never used
[INFO] [stdout]    --> letters/src/engine.rs:145:4
[INFO] [stdout]     |
[INFO] [stdout] 145 | fn markdown_to_typst(md: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `html_to_typst_simple` is never used
[INFO] [stdout]    --> letters/src/engine.rs:160:4
[INFO] [stdout]     |
[INFO] [stdout] 160 | fn html_to_typst_simple(html: &str) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HEADER_HEIGHT` is never used
[INFO] [stdout]   --> letters/src/page_container.rs:15:7
[INFO] [stdout]    |
[INFO] [stdout] 15 | const HEADER_HEIGHT: f64 = 36.0;  // header area in points
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FOOTER_HEIGHT` is never used
[INFO] [stdout]   --> letters/src/page_container.rs:16:7
[INFO] [stdout]    |
[INFO] [stdout] 16 | const FOOTER_HEIGHT: f64 = 36.0;  // footer area in points
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TICK_MINOR_INTERVAL` is never used
[INFO] [stdout]   --> letters/src/ruler.rs:20:7
[INFO] [stdout]    |
[INFO] [stdout] 20 | const TICK_MINOR_INTERVAL: f64 = 18.0;  // ~1/4 inch
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_word` and `suggestions` are never used
[INFO] [stdout]   --> letters/src/spell.rs:55:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl SpellChecker {
[INFO] [stdout]    | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn add_word(&self, word: &str) {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn suggestions(&self, word: &str) -> Vec<String> {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `checker` is never read
[INFO] [stdout]    --> letters/src/spell.rs:129:5
[INFO] [stdout]     |
[INFO] [stdout] 128 | pub struct SpellCheckHandle {
[INFO] [stdout]     |            ---------------- field in this struct
[INFO] [stdout] 129 |     checker: Rc<RefCell<SpellChecker>>,
[INFO] [stdout]     |     ^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `SpellCheckHandle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `word_at_cursor`, `suggestions`, `add_word`, `is_correct`, `replace_last`, and `set_current_word` are never used
[INFO] [stdout]    --> letters/src/spell.rs:134:12
[INFO] [stdout]     |
[INFO] [stdout] 133 | impl SpellCheckHandle {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] 134 |     pub fn word_at_cursor(&self, buffer: &gtk::TextBuffer) -> Option<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 150 |     pub fn suggestions(&self, word: &str) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 154 |     pub fn add_word(&self, word: &str) {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     pub fn is_correct(&self, word: &str) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 169 |     pub fn replace_last(&self, buffer: &gtk::TextBuffer, replacement: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 189 |     pub fn set_current_word(&self, word: &str) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `basic_suggest` is never used
[INFO] [stdout]    --> letters/src/spell.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn basic_suggest(dict: &zspell::Dictionary, word: &str) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_candidates` is never used
[INFO] [stdout]    --> letters/src/spell.rs:214:4
[INFO] [stdout]     |
[INFO] [stdout] 214 | fn generate_candidates(word: &str) -> Vec<String> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `levenshtein` is never used
[INFO] [stdout]    --> letters/src/spell.rs:247:4
[INFO] [stdout]     |
[INFO] [stdout] 247 | fn levenshtein(a: &str, b: &str) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `word_at_point` is never used
[INFO] [stdout]    --> letters/src/spell.rs:273:8
[INFO] [stdout]     |
[INFO] [stdout] 273 | pub fn word_at_point(tv: &gtk::TextView, x: f64, y: f64) -> Option<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `make_spell_menu` is never used
[INFO] [stdout]    --> letters/src/spell.rs:299:8
[INFO] [stdout]     |
[INFO] [stdout] 299 | pub fn make_spell_menu(word: &str, suggestions: &[String]) -> gio::Menu {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_buffer_to_docx` is never used
[INFO] [stdout]   --> letters/src/docx_bridge.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub fn write_buffer_to_docx(path: &str, buf: &gtk::TextBuffer) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `write_buffer_to_docx_preserving_styles` is never used
[INFO] [stdout]   --> letters/src/docx_bridge.rs:74:8
[INFO] [stdout]    |
[INFO] [stdout] 74 | pub fn write_buffer_to_docx_preserving_styles(path: &str, buf: &gtk::TextBuffer, source_path: &str) -> Result<(), String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `modify_and_sync` and `names` are never used
[INFO] [stdout]    --> letters/src/styles.rs:97:12
[INFO] [stdout]     |
[INFO] [stdout]  48 | impl StyleSheet {
[INFO] [stdout]     | --------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  97 |     pub fn modify_and_sync<F: FnOnce(&mut Style)>(&mut self, name: &str, tag_table: &gtk::TextTagTable, f: F) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 143 |     pub fn names(&self) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `index` and `line_count` are never read
[INFO] [stdout]   --> letters/src/layout.rs:12:9
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Page {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout] 11 |     /// 0-based page index.
[INFO] [stdout] 12 |     pub index: usize,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub line_count: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Page` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> letters/src/styles.rs:102:13
[INFO] [stdout]     |
[INFO] [stdout] 102 |             drop(style); // end mutable borrow
[INFO] [stdout]     |             ^^^^^-----^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  argument has type `&mut styles::Style`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     |
[INFO] [stdout] 102 -             drop(style); // end mutable borrow
[INFO] [stdout] 102 +             let _ = style; // end mutable borrow
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 28s
[INFO] running `Command { std: "docker" "inspect" "2a84e2141bf3052f958d8fd4b67df56f65174e4598c800a74e28f100dcc54c66", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2a84e2141bf3052f958d8fd4b67df56f65174e4598c800a74e28f100dcc54c66", kill_on_drop: false }`
[INFO] [stdout] 2a84e2141bf3052f958d8fd4b67df56f65174e4598c800a74e28f100dcc54c66
